package jus.aor.talk.v2;

import jus.aor.talk.Message;
import jus.aor.talk.MessageStop;
import jus.util.assertion.Require;

public interface IntervenantInterface extends java.rmi.Remote {
	/**
	* abonnement à un forum de discussion
	* @require argumentValide : forum!=null
	* @require etatValide : this.forum==null
	*/
	public boolean enter(String forum) throws Require, java.rmi.RemoteException;
	/**
	* résiliation du forum de discussion
	* @require etatValide : this.forum!=null
	*/
	public boolean leave() throws Require, java.rmi.RemoteException;
	/**
	* mise ne vacation de l'intervenant aupr�s du forum de discussion
	* @require etatValide : this.forum!=null
	*/
	public boolean vacation() throws Require, java.rmi.RemoteException;
	/**
	* envoi d'une participation au forum de discussion
	* @require argumentValide : participation!=null
	* @require etatValide : this.forum!=null
	*/
	public void say(String participation) throws Require, java.rmi.RemoteException, java.rmi.RemoteException;
	/**
	* demande de la liste des participants au forum de discussion
	* @require etatValide : this.forum!=null
	*/
	public String who() throws Require, java.rmi.RemoteException;
	/**
	* réception d'un message en provenance du forum
	* @require messageValide : message!=null
	* @require etatValide : this.forum!=null
	*/
	public void listen(Message message) throws Require, java.rmi.RemoteException;
	/**
	 * réception d'un message d'arrêt du forum
	 * @param message
	 * @throws PreCondition
	 */
	public void stop(MessageStop message) throws Require, java.rmi.RemoteException;
}
